using System;
using System.Data;
using System.Collections;
using LibreriaBusiness;
using LibreriaCommon;
using LibreriaData;
using SistemaControlTraficoLibDS;
using SistemaControlTraficoLibData;

namespace SistemaControlTraficoLibBusiness
{
    public class boPrioridad : boPrioridadBase, IDisposable
    {
        public boPrioridad(SecurityInfo securityInfo) : base(securityInfo)
        {
        }

        public DataSet FindByFiltros(string PrioridadNumero, string PrioridadPatente, int tipoPrioridadID, Nullable<decimal> PrioridadCostoHora, Nullable<decimal> PrioridadCostoHoraPeon, Constants.EstadosEnum estado, bool PrioridadPropio)
        {
            try
            {
                if (estado == Constants.EstadosEnum.Todos)
                {
                    return Prioridad.FindByFiltros(PrioridadNumero, PrioridadPatente, tipoPrioridadID, PrioridadCostoHora, PrioridadCostoHoraPeon, System.DBNull.Value, PrioridadPropio);
                }
                else
                {
                    return Prioridad.FindByFiltros(PrioridadNumero, PrioridadPatente, tipoPrioridadID, PrioridadCostoHora, PrioridadCostoHoraPeon, estado, PrioridadPropio);
                }
            }
            catch (daException ex)
            {
                throw new boException(ex);
            }
        }


        public dsPrioridad FindByLibreByMovilId(int MovilId)
        {
            try
            {
                return Prioridad.FindByLibreByMovilId(MovilId);
            }
            catch (daException ex)
            {
                throw new boException(ex);
            }
        }


        public void Delete(int PrioridadID)
        {
            try
            {
                Prioridad.Delete(PrioridadID);
            }
            catch (daException ex)
            {
                throw new boException(ex);
            }
        }

        public void AsignarMovil(int MovilID)
        {
            dsPrioridad dsPrioridad = null;
            dsPrioridad.PrioridadRow drPrioridad = null;

            dsPrioridad = FindByLibreByMovilId(MovilID);
            drPrioridad = (dsPrioridad.PrioridadRow)dsPrioridad.Prioridad.Rows[0];
            drPrioridad["PrioridadAsignado"] = true;

            Update(dsPrioridad);
        }

        public void LiberarMovil(int MovilID, DateTime fechaHora)
        {
            dsPrioridad dsPrioridad = null;
            dsPrioridad.PrioridadRow drPrioridad = null;

            dsPrioridad = new dsPrioridad();
            drPrioridad = dsPrioridad.Prioridad.NewPrioridadRow();
            drPrioridad.MovilID = MovilID;
            drPrioridad.PrioridadFechaHora = fechaHora;
            drPrioridad.Activo = true;
            FillLog(drPrioridad);
            dsPrioridad.Prioridad.AddPrioridadRow(drPrioridad);

            Update(dsPrioridad);
        
        }
    }
}

